package org.javahispano.javacup.tacticas_aceptadas.mbedoya;

import java.awt.Color;
import org.javahispano.javacup.modelo.*;

import java.util.LinkedList;
import java.util.List;

import javax.crypto.spec.PSource;
import javax.swing.text.Position;

public class TacticaBedoya implements Tactica {

	//Posici�n netamente ofensiva
	 Posicion alineacion1[]=new Posicion[]{
		        new Posicion(0.2595419847328244,-50.41044776119403),
		        new Posicion(-4.755244755244756,-8.314479638009049),
		        new Posicion(4.5174825174825175,-13.778280542986426),
		        new Posicion(16.167832167832167,-4.038461538461538),
		        new Posicion(-13.552447552447552,-4.98868778280543),
		        new Posicion(-0.7132867132867133,0.7126696832579186),
		        new Posicion(-18.307692307692307,8.076923076923077),
		        new Posicion(14.97902097902098,9.027149321266968),
		        new Posicion(-1.4265734265734267,23.042986425339365),
		        new Posicion(-12.601398601398602,30.68325791855204),
		        new Posicion(6.895104895104895,30.44570135746606)
		    };

	 //Posici�n netamente defensaiva
	  Posicion alineacion2[]=new Posicion[]{
		        new Posicion(0.2595419847328244,-50.41044776119403),
		        new Posicion(-5.706293706293707,-36.82126696832579),
		        new Posicion(3.5664335664335667,-37.05882352941177),
		        new Posicion(18.78321678321678,-37.05882352941177),
		        new Posicion(-19.496503496503497,-36.82126696832579),
		        new Posicion(0.23776223776223776,-19.717194570135746),
		        new Posicion(-11.412587412587413,-29.457013574660635),
		        new Posicion(9.272727272727272,-28.50678733031674),
		        new Posicion(-0.23776223776223776,0.9502262443438915),
		        new Posicion(-12.839160839160838,21.380090497737555),
		        new Posicion(6.6573426573426575,30.21945701357466)
	  };

	 //Posici�n medio defensiva
	  Posicion alineacion3[]=new Posicion[]{
		        new Posicion(0.2595419847328244,-50.41044776119403),
		        new Posicion(-5.706293706293707,-34.20814479638009),
		        new Posicion(3.5664335664335667,-33.73303167420815),
		        new Posicion(19.734265734265733,-33.49547511312217),
		        new Posicion(-19.496503496503497,-33.970588235294116),
		        new Posicion(-0.4755244755244755,-13.778280542986426),
		        new Posicion(-11.65034965034965,-22.330316742081447),
		        new Posicion(9.986013986013985,-20.90497737556561),
		        new Posicion(-0.23776223776223776,5.463800904977376),
		        new Posicion(-12.839160839160838,21.380090497737555),
		        new Posicion(6.6573426573426575,29.21945701357466)
    };

	 //Posici�n medio ofensiva
	  Posicion alineacion4[]=new Posicion[]{
		        new Posicion(0.2595419847328244,-50.41044776119403),
		        new Posicion(-8.55944055944056,-25.893665158371043),
		        new Posicion(3.804195804195804,-27.31900452488688),
		        new Posicion(17.11888111888112,-22.56787330316742),
		        new Posicion(-21.874125874125873,-24.705882352941178),
		        new Posicion(-0.4755244755244755,-7.364253393665159),
		        new Posicion(-11.65034965034965,-12.352941176470589),
		        new Posicion(9.510489510489512,-12.828054298642533),
		        new Posicion(-0.23776223776223776,13.065610859728507),
		        new Posicion(-12.839160839160838,26.131221719457013),
		        new Posicion(6.895104895104895,28.44570135746606)
     };


    Posicion alineacion5[]=new Posicion[]{
        new Posicion(0.2595419847328244,-50.41044776119403),
        new Posicion(-11.16030534351145,-35.78358208955224),
        new Posicion(12.717557251908397,-35.26119402985075),
        new Posicion(28.290076335877863,-28.470149253731343),
        new Posicion(-28.290076335877863,-28.470149253731343),
        new Posicion(14.793893129770993,-18.544776119402986),
        new Posicion(-17.389312977099234,-19.58955223880597),
        new Posicion(-23.618320610687025,-0.7835820895522387),
        new Posicion(5.969465648854961,-5.485074626865671),
        new Posicion(0.2595419847328244,-0.26119402985074625),
        new Posicion(22.580152671755727,-1.3059701492537314)
    };

    Posicion alineacion6[]=new Posicion[]{
        new Posicion(0.2595419847328244,-50.41044776119403),
        new Posicion(-8.797202797202797,-34.20814479638009),
        new Posicion(7.608391608391608,-34.920814479638004),
        new Posicion(18.545454545454543,-30.16968325791855),
        new Posicion(-20.447552447552447,-31.119909502262445),
        new Posicion(11.888111888111888,-17.104072398190045),
        new Posicion(-13.552447552447552,-16.391402714932127),
        new Posicion(-1.6643356643356644,-21.380090497737555),
        new Posicion(-1.4265734265734267,-9.502262443438914),
        new Posicion(-12.363636363636363,-1.4253393665158371),
        new Posicion(10.6993006993007,-1.900452488687783)
    };

    //Distancia desde donde se intentar� remate
    private double distanciaParaRemate = 33;
    
    class TacticaDetalleImpl implements TacticaDetalle {

        public String getNombre() {
            return "negrobedoya";
        }

        public String getPais() {
            return "Colombia";
        }

        public String getEntrenador() {
            return "Mauro Bedoya DT";
        }

        public Color getColorCamiseta() {
            return new Color(51, 153, 0);
        }

        public Color getColorPantalon() {
            return new Color(0, 0, 0);
        }

        public Color getColorFranja() {
            return new Color(255, 255, 255);
        }

        public Color getColorCalcetas() {
            return new Color(255, 255, 255);
        }

        public Color getColorPortero() {
            return new Color(133, 255, 118        );
        }

        public EstiloUniforme getEstilo() {
            return EstiloUniforme.LINEAS_VERTICALES;
        }

        public Color getColorCamiseta2() {
            return new Color(96, 229, 59);
        }

        public Color getColorPantalon2() {
            return new Color(3, 62, 75);
        }

        public Color getColorFranja2() {
            return new Color(245, 218, 101);
        }

        public Color getColorCalcetas2() {
            return new Color(95, 255, 206);
        }

        public Color getColorPortero2() {
            return new Color(53, 11, 79        );
        }

        public EstiloUniforme getEstilo2() {
            return EstiloUniforme.SIN_ESTILO;
        }

        class JugadorImpl implements JugadorDetalle {

            String nombre;
            int numero;
            Color piel, pelo;
            double velocidad, remate, presicion;
            boolean portero;
            Posicion posicion;

            public JugadorImpl(String nombre, int numero, Color piel, Color pelo,
                    double velocidad, double remate, double presicion, boolean portero) {
                this.nombre=nombre;
                this.numero=numero;
                this.piel=piel;
                this.pelo=pelo;
                this.velocidad=velocidad;
                this.remate=remate;
                this.presicion=presicion;
                this.portero=portero;
            }

            public String getNombre() {
                return nombre;
            }

            public Color getColorPiel() {
                return piel;
            }

            public Color getColorPelo() {
                return pelo;
            }

            public int getNumero() {
                return numero;
            }

            public boolean esPortero() {
                return portero;
            }

            public double getVelocidad() {
                return velocidad;
            }

            public double getRemate() {
                return remate;
            }

            public double getPresicion() {
                return presicion;
            }

        }

        public JugadorDetalle[] getJugadores() {
            return new JugadorDetalle[]{
                new JugadorImpl("Ospina", 1, new Color(255,200,150), new Color(50,0,0),1.0d,1.0d,1.0d, true),
                new JugadorImpl("Andres Escobar", 2, new Color(255,200,150), new Color(50,0,0),1.0d,1.0d,0.72d, false),
                new JugadorImpl("Aquivaldo Mosquera", 3, new Color(0,0,0), new Color(51,51,51),1.0d,1.0d,0.83d, false),
                new JugadorImpl("Camilo Zu�iga", 4, new Color(190,147,107), new Color(50,0,0),0.65d,0.75d,0.51d, false),
                new JugadorImpl("Estiven Velez", 5, new Color(232,184,140), new Color(50,0,0),0.65d,0.71d,0.49d, false),
                new JugadorImpl("Ringo Amaya", 6, new Color(226,178,135), new Color(50,0,0),1.0d,0.75d,1.0d, false),
                new JugadorImpl("Marin", 7, new Color(244,216,191), new Color(50,0,0),0.62d,0.62d,0.42d, false),
                new JugadorImpl("Fredy Guar�n", 8, new Color(231,181,135), new Color(50,0,0),0.67d,0.69d,0.42d, false),
                new JugadorImpl("Aldo", 10, new Color(255,200,150), new Color(50,0,0),1.0d,1.0d,1.0d, false),
                new JugadorImpl("Apsrilla", 9, new Color(51,51,51), new Color(50,0,0),1.0d,1.0d,1.0d, false),
                new JugadorImpl("Angel", 11, new Color(255,200,150), new Color(50,0,0),1.0d,1.0d,1.0d, false)
            };
        }
    }

    TacticaDetalle detalle=new TacticaDetalleImpl();
    public TacticaDetalle getDetalle() {
        return detalle;
    }

    public Posicion[] getPosicionSaca(SituacionPartido sp) {
    return alineacion5;
    }

    public Posicion[] getPosicionRecive(SituacionPartido sp) {
    return alineacion6;
    }

    public List<Comando> ejecutar(SituacionPartido sp) {
    	  	
    	//Lista de comandos
    	LinkedList<Comando> comandos = new LinkedList<Comando>();
    	
    	//Indica si estoy en posici�n total de defensa
    	boolean defendiendo = false;
    	
    	//Indica si estoy en posici�n total de ataque
    	boolean atacando = false;
    	
    	//Seg�n la posici�n del bal�n los jugadores deber�n seguir una alineaci�n
    	double distanciaBalonArcoSuperior = sp.balon().distancia(Constantes.centroArcoSup);
    	double distanciaBalonArcoInferior = sp.balon().distancia(Constantes.centroArcoInf);
    	double distanciaBalonCentroCampo = sp.balon().distancia(Constantes.centroCampoJuego);
    	
    	//MOVIMIENTOS T�CTICOS - TODO EL EQUIPO
    	
    	//Defendiendo?
    	if(distanciaBalonArcoInferior < distanciaBalonArcoSuperior){
    		
    		//El bal�n pasa los 3 cuartos de cancha?
    		if(distanciaBalonArcoInferior < distanciaBalonCentroCampo){
    			//Cambiar a alineaci�n defensiva    		
        		for(int i=0;i<11;i++)
        		{
        			comandos.add(new ComandoIrA(i, alineacion2[i]));
        		}
        		
        		defendiendo = true;
    		}else{
    			
    			//Mover los jugadores a su posici�n neutra
        		for(int i=0;i<11;i++)
        		{
        			comandos.add(new ComandoIrA(i, alineacion3[i]));
        		}
    		}
    	}else{
    		
    		//Atacando? El bal�n pasa 3 cuartos de cancha?
    		if(distanciaBalonArcoSuperior < distanciaBalonCentroCampo){
    			//Mover los jugadores a alineaci�n ofensiva
        		for(int i=0;i<11;i++)
        		{
        			comandos.add(new ComandoIrA(i, alineacion1[i]));
        		}
        		
        		atacando = true;
    			
    		}else{
    			//Mover los jugadores a posici�n medio atacante
        		for(int i=0;i<11;i++)
        		{
        			comandos.add(new ComandoIrA(i, alineacion4[i]));
        		}
    		}    		    		
    	}
    	
    	//MOVIMIENTOS T�CTICOS - JUGADORES CERCANOS AL BAL�N
    	
    	//Obtener indices de los Jugadores cercanos al bal�n
		int[] indices =  sp.balon().indicesMasCercanos(sp.misJugadores());
		double distanciaPateadorArco = Constantes.centroArcoSup.distancia(sp.misJugadores()[indices[0]]);
		
		//Perseguir bal�n con jugador m�s cercano y el 
		comandos.add(new ComandoIrA(indices[0], sp.balon()));
		
		//Si no estoy atacando perseguir bal�n con los de atr�s
		if(!atacando){
			//Siguiente Jugador m�s cercano pero que est� m�s atr�s defendiendo
			comandos.add(new ComandoIrA(obtenerJugadorDefensivoCercano(sp, indices[0]), sp.balon()));
		}else{
			comandos.add(new ComandoIrA(indices[1], sp.balon()));
		}		
		
		//Defendiendo? Cubrir delantero en mejor posici�n
		if(defendiendo)
		{		
			double distanciaRivalMiArco = sp.rivales()[Constantes.centroArcoInf.indicesMasCercanos(sp.rivales())[0]].distancia(Constantes.centroArcoInf);
			double distanciaDefensaMiArco = sp.misJugadores()[Constantes.centroArcoInf.indicesMasCercanos(sp.misJugadores())[1]].distancia(Constantes.centroArcoInf);		
			//S� hay un jugador del otro equipo de g�evero como duque, enviar defensa m�s cercano
			if(distanciaRivalMiArco  <  distanciaDefensaMiArco)
			{
				comandos.add(new ComandoIrA(Constantes.centroArcoInf.indicesMasCercanos(sp.misJugadores())[1], sp.rivales()[Constantes.centroArcoInf.indicesMasCercanos(sp.rivales())[0]]));
				//System.out.println("Marcando delantero contrario");
			}
		}
		
		//Si el bal�n lo tiene el arquero o alguno de los defensas enviar el bal�n al centro del campo
		if(indices[0] >= 0 && indices[0] <= 4 || defendiendo)
		{
			int indiceJugadorCentro = Constantes.centroCampoJuego.indicesMasCercanos(sp.misJugadores())[0];
			
			Posicion posicionRechazo = sp.misJugadores()[indiceJugadorCentro];
			
			//Atacando hacia arriba?
			if(Constantes.centroArcoSup.getY() >  0){
				posicionRechazo = posicionRechazo.moverPosicion(0, posicionRechazo.getY() + 3);
			}else{
				posicionRechazo = posicionRechazo.moverPosicion(0, posicionRechazo.getY() - 3);
			}	
			
			comandos.add(new ComandoGolpearBalon(indices[0], posicionRechazo, 1, true));
		}
		else
		{			
			//Determinar a cu�l jugador de adelante se debe pasar el bal�n				
			//int[]indicesCercanosPateador = sp.misJugadores()[indices[0]].indicesMasCercanos(sp.misJugadores(), indices[0]);
			
			//int indiceJugadorAdelante = -1;
			//double distanciaMenorArco = 200;
			//Obtener el jugador cercano que est� mas adelante
			//for(int i=1;i<10;i++)
			//{
			//	double distancia = sp.misJugadores()[indicesCercanosPateador[i]].distancia(Constantes.centroArcoSup); 
				
			//	if(distancia < distanciaMenorArco){
			//		indiceJugadorAdelante = indicesCercanosPateador[i];
			//		distanciaMenorArco = distancia;
			//	}
			//}
			
			int indiceJugadorAdelante = Constantes.centroArcoSup.indiceMasCercano(sp.misJugadores(), indices[0]);
			double distanciaMenorArco = Constantes.centroArcoSup.distancia(sp.misJugadores()[indiceJugadorAdelante]);
			
			//System.out.println("# pateador " + obtenerNumeroJugador(sp, indices[0]) + " distancia arco " + distanciaPateadorArco);			
			//System.out.println("# receptor " + obtenerNumeroJugador(sp, indiceJugadorAdelante) + " distancia arco " + distanciaMenorArco);
			
			//Si el bal�n est� cerca de mi arco el arquero debe salir
			if(distanciaBalonArcoInferior < 12)
			{
				comandos.add(new ComandoIrA(0, sp.balon()));
			}
			
			//Si ninguno de mis jugadores est� m�s cerca del arco yo o si estoy cerca para patear 
			if(distanciaPateadorArco < distanciaMenorArco || sp.misJugadores()[indices[0]].distancia(Constantes.centroArcoSup) <= 28){
				
				//Si no hay rivales m�s cercanos que yo al arco...dominar
				double distanciaRivalCercanoArco = Constantes.centroArcoSup.distancia(sp.rivales()[Constantes.centroArcoSup.indicesMasCercanos(sp.rivales())[0]]);
				
				//Si est� cerca del arco debe rematar
				if(distanciaPateadorArco <= distanciaParaRemate)
				{	
					//Si todav�a me puedo acercar m�s y los rivales no est�n cerca
					if(distanciaRivalCercanoArco > distanciaPateadorArco && distanciaPateadorArco > 20){
						
						//Dominar Bal�n 
						comandos.add(new ComandoGolpearBalon(indices[0], Constantes.centroArcoSup, 0.35, false));
						//System.out.println("Dominando");
						
					}else{
						
						//Rematar al arco
						rematarArco(indices[0], sp, comandos);
					}
					
				}else{
					//Dominar Bal�n 
					comandos.add(new ComandoGolpearBalon(indices[0], Constantes.centroArcoSup, 0.35, false));
					//System.out.println("Dominando");
				}
				
			}
			else{
				
				//Realizar pase
				darPase(sp, indices[0], indiceJugadorAdelante, comandos);
			}			
		}
		
        return comandos;
    }
    
    //Obtener el jugador que est� m�s atr�s pero cercano al bal�n
    //Recive el �ndice del jugador que ya est� persiguiendo el bal�n y no se debe tener en cuenta
    private int obtenerJugadorDefensivoCercano(SituacionPartido sp, int indiceExcluir){
    	
    	int[] indicesCercanosArco = Constantes.centroArcoInf.indicesMasCercanos(sp.misJugadores(), indiceExcluir);
    	int[] indicesCercanosBalon = sp.balon().indicesMasCercanos(sp.misJugadores(), indiceExcluir);
    	
    	int indiceMenor = 20;
    	int indiceJugadorCercano = indicesCercanosBalon[0];
    	
    	for(int i : indicesCercanosArco){
    		for(int j : indicesCercanosArco){
    			
    			//El arquero no se saca...s�lo si es el m�s cercano
    			if(indicesCercanosArco[i] == indicesCercanosBalon[j] && indicesCercanosArco[i] != 0){
    				
    				//Atacando hacia arriba?
    				if(Constantes.centroArcoSup.getY() > 0){
    					//M�s cercano al bal�n pero m�s atr�s
    					if(j < indiceMenor && sp.misJugadores()[indicesCercanosArco[i]].getY() < sp.balon().getY()){
            				indiceJugadorCercano = indicesCercanosArco[i];
            				indiceMenor = j;
            			}
    				}else{
    					if(j < indiceMenor && sp.misJugadores()[indicesCercanosArco[i]].getY() > sp.balon().getY()){
            				indiceJugadorCercano = indicesCercanosArco[i];
            				indiceMenor = j;
            			}
    				}
    				
        			
        		}
    		}    		
    	}
    	
    	return indiceJugadorCercano;
    }    
    
    //Procedimiento utilizado para rematar al arco
    private void rematarArco(int indicePateador, SituacionPartido sp, LinkedList<Comando> comandos){
    	
    	//Obtener posicion del arquero rival
		Posicion posicionArqueroRival = sp.rivales()[0];
		
		//Obtener la posici�n a donde se debe rematar
		Posicion posicionRemate;
		
		//Obtener distancia al arco
		double distanciaArco = sp.misJugadores()[indicePateador].distancia(Constantes.centroArcoSup);
		
		//Fuerza a utilizar para rematar
		double fuerzaRemate;
		
		//Si el arquero est� cerca a los palos disparar al centro
		if(Math.abs(posicionArqueroRival.getX()) >= 5 || distanciaArco > 25){			
			posicionRemate = Constantes.centroArcoSup;			
		}else{
			
			//Si arquero se encuentra un poco alejado del medio
			if(Math.abs(posicionArqueroRival.getX()) >= 3){
				
				if(posicionArqueroRival.getX() < 0){
					posicionRemate = Constantes.centroArcoSup.moverPosicion(posicionArqueroRival.getX()*(-1), 0);
				}else{
					posicionRemate = Constantes.centroArcoSup.moverPosicion(posicionArqueroRival.getX()*(-1), 0);
				}
				
			}else{
				
				//Arquero cerca al centro
				if(Math.abs(posicionArqueroRival.getX()) >= 1){
					
					if(posicionArqueroRival.getX() < 0){
						posicionRemate = Constantes.centroArcoSup.moverPosicion(posicionArqueroRival.getX()*(-1) + 0.8, 0);
					}else{
						posicionRemate = Constantes.centroArcoSup.moverPosicion(posicionArqueroRival.getX()*(-1) - 0.8, 0);
					}
					
				}else{
				
					//Arquero muy cerca al centro				
					if(posicionArqueroRival.getX() < 0){
						posicionRemate = Constantes.centroArcoSup.moverPosicion(posicionArqueroRival.getX()*(-1) + 2.2, 0);
					}else{
						posicionRemate = Constantes.centroArcoSup.moverPosicion(posicionArqueroRival.getX()*(-1) - 2.2, 0);
					}
				}
			}	
		}	
		
		
		//Determinar altura remate
		boolean remateAlto = false;		
		if(distanciaArco >= 22)
		{
			remateAlto = true;
		}
		
		if(distanciaArco >= distanciaParaRemate - 2){
			fuerzaRemate = 0.98;
		}else{
			//Determinar la fuerza del remate
			fuerzaRemate = distanciaArco /(distanciaParaRemate - 6.5);
			
			//Si el disparo ser�a muy d�bil aumentar un poco
			if(fuerzaRemate < 0.92){
				fuerzaRemate = 0.92;			
			}
		}
		
		//Adicionar comando de disparo
		comandos.add(new ComandoGolpearBalon(indicePateador, posicionRemate, fuerzaRemate, remateAlto));
		//System.out.println("Jugador:"  + sp.detalleMisJugadores()[indicePateador].getNombre());
		//System.out.println("Rematando a X Y " + posicionRemate.getX() + " " + posicionRemate.getY() + " Posici�n arquero X " + posicionArqueroRival.getX());
		//System.out.println("Fuerza remate " + fuerzaRemate);
		//System.out.println("Balon X Y " + sp.balon().getX()+ " " + sp.balon().getY());
    }
    
    private void darPase(SituacionPartido sp, int indiceJugadorPasador, int indiceJugadorRecibe , LinkedList<Comando> comandos){
    	
    	double fuerzaPase;
		boolean paseAlto = false;		
		
		//Obetner indices de los rivales m�s cercanos
		int[] indicesRivalesCercanos = sp.misJugadores()[indiceJugadorRecibe].indicesMasCercanos(sp.rivales());		
		Posicion posicionRivalCercano = sp.rivales()[indicesRivalesCercanos[0]];
		
		//Posicion Jugador recibe
		Posicion posicionJugadorRecibe = sp.misJugadores()[indiceJugadorRecibe];
		
		//Posicion a la cual se env�a el pase. Por defecto es al jugador
		Posicion posicionPase = posicionJugadorRecibe;
		
		//Si hay rival cerca del que recibe enviar bal�n lejos de �l
		if(posicionJugadorRecibe.distancia(posicionRivalCercano) < 5)
		{		
			
			//Solo modificar para enviarlo hacia adelante...nunca hacia atr�s
			//Atacando hacia arriba?
			if(Constantes.centroArcoSup.getY() > 0){
				
				//System.out.println("Rival detectado..modificado pase cancha arriba");
				
				//Se env�a el bal�n al lado contrario del jugador m�s cercano que se tenga...esto para evitar marcas
				if(posicionRivalCercano.getY() < posicionJugadorRecibe.getY()){
					posicionPase = posicionJugadorRecibe.moverPosicion(0, posicionJugadorRecibe.getY() + 1.5);
				}
			}else{
				//System.out.println("Rival detectado..modificado pase cancha abajo");
				
				//Se env�a el bal�n al lado contrario del jugador m�s cercano que se tenga...esto para evitar marcas
				if(posicionRivalCercano.getY() > posicionJugadorRecibe.getY()){
					posicionPase = posicionJugadorRecibe.moverPosicion(0, posicionJugadorRecibe.getY() - 1.5);
				}
			}			
		}
		
		double distanciaJugadoresPase = posicionPase.distancia(sp.misJugadores()[indiceJugadorPasador]);		
		
		//Determinar la fuerza del pase
		if(distanciaJugadoresPase >= 62)
		{					
			fuerzaPase = 0.95;
		}
		else
		{
			if(distanciaJugadoresPase >= 33){
				
				fuerzaPase = 0.94;
				
			}else{
				fuerzaPase = distanciaJugadoresPase/33;
				if(fuerzaPase < 0.7){
					fuerzaPase = 0.7;			
				}
			}			
		}
		
		if(distanciaJugadoresPase > 20){
			paseAlto = true;
		}
		
		//Pasar al jugador que est� m�s adelante 
		comandos.add(new ComandoGolpearBalon(indiceJugadorPasador, posicionPase, fuerzaPase, paseAlto));
		//System.out.println("Pasando a # " + obtenerNumeroJugador(sp, indiceJugadorRecibe));
		//System.out.println("Fuerza " + fuerzaPase + ", Distancia = " + distanciaJugadoresPase);
		//System.out.println("Psocion Pase Y " + posicionPase.getY());
    }
    
    public int obtenerNumeroJugador(SituacionPartido sp, int indice){
    	return sp.detalleMisJugadores()[indice].getNumero();
    }
}